#+TITLE: Problemas de Conkeror por solucionar
#+AUTHOR: Daniel Clemente Laboreo
#+DATE: Desde 2009
#+SETUPFILE: ../pagina/opc_mías.org
#+SETUPFILE: ../pagina/opc_org-info.org

[[http://conkeror.org/][conkeror]] (escrito con c, no con [[http://konqueror.org/][k]]) es un navegador web que sigue el estilo de [[file:emacs.org][Emacs]]; es por tanto muy personalizable.
Es el que más uso, y aunque me permite ser muy productivo, aún no me es cómodo del todo.
Aquí listo los fallos que intento corregir.

{{{parte-de-mi-hacer}}}

{{{time(%e.m%m.%Y)}}} (desde 2009). En 2017 esta página sigue vigente; en 2023 es bastante inútil porque conkeror lleva años parado. Daniel Clemente Laboreo ([[http://www.danielclemente.com/][web]], [[mailto:n142857@QUITA_ESTO.gmail.com][correo]]).
{{{enlace-a-orgmode}}}

#+INCLUDE: secciones.org

-----------------------------------

# Aquí ha de salir índice
#+TOC: headlines 4

-----------------------------------

# Empecé en serio en diciembre 2008.

# Probado el <2008-02-24 dg>. Motor Gecko en XUL al estilo [[file:emacs.org]]. Está muy bien. +Quiero ver si supera a Konqueror y a emacs-w3m.+ ← tras años de usarlo, ya me doy cuenta de que es el mejor que he visto; debe de ser por ser tipo Emacs.
# - ¡usarlo siempre con xulrunner avanzado!

* fallos en conkeror y pequeños cambios
  :CLOCK:
  CLOCK: [2011-08-29 Пнд 15:13]--[2011-08-29 Пнд 15:37] =>  0:24
  CLOCK: [2011-06-29 dc 10:04]--[2011-06-29 dc 10:40] =>  0:36
  CLOCK: [2011-06-09 jue 19:15]--[2011-06-09 jue 19:27] =>  0:12
  CLOCK: [2011-05-13 dv 08:36]--[2011-05-13 dv 09:10] =>  0:34
  CLOCK: [2011-05-11 dc 08:47]--[2011-05-11 dc 09:06] =>  0:19
  CLOCK: [2011-03-25 dv 08:30]--[2011-03-25 dv 08:50] =>  0:20
  :END:

** BONUS fallo raro al volcar búfers
<2008-12-15 lun> 
http://bugs.conkeror.org/issue89

** IS al cerrar una pestaña quiero ir al búfer de la derecha
    SCHEDULED: <2009-02-20 dv> CLOSED: [2009-03-02 dl 11:34]
    - CONCLUSIÓN escrita el [2009-03-02 dl 11:34] \\
      ya se hizo; es con „w“ en mi conkeror
    CLOCK: [2009-02-26 dj 20:33]--[2009-02-26 dj 20:43] =>  0:10
Pues considero la barra como una pila donde lo izquierdo es lo más viejo.
Puedo empezar a usar bury-buffer para salir del paso.
*** IS preguntado en grupo de conkeror
    CLOSED: [2009-02-26 dj 20:39]

** BONUS quitar cuadro que pide bajar plugin de Flash
   CLOCK: [2009-02-20 dv 09:08]--[2009-02-20 dv 09:15] =>  0:07
*** IS encontrar una página donde pase
    SCHEDULED: <2009-02-01 dg> CLOSED: [2009-02-03 dt 21:43]

**** una donde pasa: <2009-02-02 dl 15:43>: http://my.colby.edu/ics/Libraries/

#+BEGIN_SRC html
<!-- Beginning of meebo me widget code. Want to talk with visitors on your page? Go to http://www.meebome.com/ and get your widget! -->
<div style="TEXT-ALIGN: center">  <embed src="http://widget.meebo.com/mm.swf?RDEHFPsHqk" width="160" height="250" type="application/x-shockwave-flash" wmode="transparent"><br><span class="text11"><strong><strong></strong></strong></span><strong><strong></strong></strong></div><strong><strong>
<div align="center"><a href="http://www.colby.edu/academics_cs/library/im-olin.cfm" target="_blank"">OlinHelp</a> | <a href="http://www.colby.edu/academics_cs/library/im-bixler.cfm" target="_blank"">BixlerHelp</a><a href="http://www.colby.edu/academics_cs/library/about/forms/meet-librarian.cfm?renderforprint=1"> </a></div>
</strong></strong></div></div></div><br style="clear:both" />
#+END_SRC

**** otra donde pasa: <2009-02-02 dl 16:40>: http://www.jivesoftware.com/
#+BEGIN_SRC html
<script type="text/javascript" language="javascript">
    AC_FL_RunContent(
        'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0',
        'width', '720',
        'height', '359',
        'src', '/resources/flash/homepage',
#+END_SRC

*** IS página mínima reproducible
     CLOSED: [2009-02-03 dt 21:47]

: <embed src="http://widget.meebo.com/mm.swf" type="application/x-shockwave-flash" />
: Hola

*** IS escribir a lista (cuando tenga página reproducible)
     SCHEDULED: <2009-02-09 lun> CLOSED: [2009-02-09 dl 16:55]
     - CONCLUSIÓN escrita el [2009-02-09 dl 16:56] \\
       Mandado:
       http://bugs.conkeror.org/issue130
     CLOCK: [2009-02-09 dl 16:39]--[2009-02-09 dl 16:55] =>  0:16

Hi,
   each time I open a page which embeds a Flash object, a popup appears which says:

----------
This page contains information of a type (application/x-shockwave-flash) that can only be viewed with the appropriate Plug-in.
Click OK to download Plugin.
----------

   I certainly don't want Flash, and I don't like that Conkeror asks me each time. There should be a way to remember the user's decision... or a way to disable this dialog.


   You can use this code to try:


 <embed src="http://widget.meebo.com/mm.swf" type="application/x-shockwave-flash" />
Hola

  Or test it by opening any of these URLs:
- http://my.colby.edu/ics/Libraries/
- http://www.jivesoftware.com/


   This seems to happen only in a computer running Ubuntu 8.04. In my home computer running Debian unstable, no popup appears. However, both have the same values in about:config:
- application.use_ns_plugin_finder;false
- plugin.expose_full_path;true
- plugin.override_internal_types;false
- privacy.popups.disable_from_plugins;2
- security.xpconnect.plugin.unrestricted;true


   Greetings,
Daniel

*** ¿por qué en ali no pasa y en CPU107 sí?
ali: Debian
- application.use_ns_plugin_finder;false
- plugin.expose_full_path;true
- plugin.override_internal_types;false
- privacy.popups.disable_from_plugins;2
- security.xpconnect.plugin.unrestricted;true

En CPU107: Ubuntu
- esas 5 están igual

**** IS mirar en CPU107
     SCHEDULED: <2009-02-05 jue 09:30> CLOSED: [2009-02-06 dv 12:19]
**** probar con perfil nuevo en cada uno

*** MALFAR ver si lo solucionan o responden los de Conkeror
     SCHEDULED: <2009-03-06 dv> CLOSED: [2009-03-09 dl 11:08]
     - CONCLUSIÓN escrita el [2009-03-09 dl 11:08] \\
       me da igual; ya lo solucioné yo; ya me enteraré por otros medios
http://bugs.conkeror.org/issue130

*** IS ∴ solución temporal
     CLOSED: [2009-02-20 dv 09:09]
     - CONCLUSIÓN escrita el [2009-02-20 dv 09:10] \\
       pues ya va, pero no aviso para ver qué dicen ellos
You need to disable the Adobe Reader plugin to prevent it from viewing PDFs
inside Conkeror. Type M-x extensions to open the extensions manager, select
plugins, select Adobe Reader, and click disable.

Desactivar el plugin base.

*** cosa relacionada
http://conkeror.org/MimeTypeHandlers

** quiero más teclas útiles
*** IS C-t (transpose-chars) en más sitios y más útil
     CLOSED: [2010-03-21 dom 21:39]
     - CONCLUSIÓN escrita el [2010-03-21 dom 21:39] \\
       ya se arregló y va en todos lados
    :CLOCK:
    CLOCK: [2009-10-09 dv 09:06]--[2009-10-09 dv 09:21] =>  0:15
    :END:
Lo mandé a la lista el <2009-09-24 dj>.
Mandado otro parche el <2009-10-09 dv>.

*** BONUS teclas para usar combos y listas de selección
Quiero:
- tecla para moverme arriba/abajo por SELECT
- tecla para desplegar combo
- tecla para moverme arriba/abajo por combo

Ver en =conkeror/modules/bindings/default/content-buffer/select.js=

O preguntar:
-  when a combo or a selection list (<select><option><option>…) is focused, C-p and C-n scroll the list, whereas up/down (cursor keys) move the selection pointer up/down. I would like to change …

** BONUS motor de búsqueda en el idioma local
Ej: que poniendo minibúfer =g= y luego „g 142857“ me dé la interfaz y resultados adaptados al idioma que yo elija.

Creo que en la definición de =google= en =conkeror/search-engines/google.xml= falta pasar un:
: <Param name="hl" value="{language}"/>

Además creo que toma =user_pref(LOCALE_PREF)=, cuando esto está lejos de la local del usuario (ej: yo tenía =en-US= aunque =LANG=ca_ES.UTF-8=).

** BONUS que salga el atributo title (los rótulos) en imágenes, enlaces, etc.
Parece ser que es este informe http://bugs.conkeror.org/msg377

Lo más cómodo es que salgan flotantes sólo al apuntar, sin tocar teclas. Pero además con atajo de teclado para cuando no se usa el ratón.

** IS evitar que se mueva el foco (regresión)
   CLOSED: [2009-10-13 dt 21:21]
http://bugs.conkeror.org/issue209

** IS no siempre va a la URL del portapapeles (usando paste-url)
   CLOSED: [2009-10-16 dv 08:56]
   :CLOCK:
   CLOCK: [2009-10-15 dj 15:51]--[2009-10-15 dj 16:11] =>  0:20
   :END:
*** IS descripción
El problema está en esta entrada:

#+BEGIN_EXAMPLE
Author: John Foerch <…>  2009-09-23 02:02:23
Committer: John Foerch <…>  2009-09-23 02:02:49
Parent: 854151f3feecc7ff736ede69c0c05e5a3d5308d4 (comments and docstrings for browser object system)
Branches: master, remotes/origin/master, remotes/origin/new-input-system
Follows: abe-0.9--git090719-1
Precedes: 0.9.1

    browser object "pasteurl" renamed to "paste-url"
    
    also rewrote it to validate the url
#+END_EXAMPLE

Y por tanto en este código:

#+BEGIN_SRC javascript
  define_browser_object_class("paste-url",
      "Browser object which reads an url from the X Primary Selection, "+
      "falling back on the clipboard for operating systems which lack one.",
      function (I, prompt) {
          try {
              return make_uri(read_from_x_primary_selection()).spec;
          } catch (e) {
              throw new interactive_error("error: malformed url");
          }
#+END_SRC

El problema es que no coge como buenas URLs que no tengan el http:// al principio. Ej: www.a.com no va, pero http://www.a.com sí

*** IS corregir paste-url
    :CLOCK:
    CLOCK: [2009-10-15 dj 16:20]--[2009-10-15 dj 16:44] =>  0:24
    :END:
Tocar esto: [[file:/w/conkeror/modules/element.js]], el =return make_uri read_from_x_primary_selection spec=.

Si tiene ^[^:]+\. es que le falta la parte del protocolo, por tanto hay que añadir "http://"
Antes le quito espacios.

=make_uri= hace al final: =return io_service.newURI(uri, charset, base_uri);=, donde =uri= es una cadena normal.

*** IS esperar corrección oficial
     CLOSED: [2009-10-16 dv 08:56]
     - CONCLUSIÓN escrita el [2009-10-16 dv 08:56] \\
       metido
http://bugs.conkeror.org/issue212

** BONUS los rótulos de selección de enlace podrían usar clases para cambiar por CSS
   :CLOCK:
   CLOCK: [2009-11-05 dj 12:29]--[2009-11-05 dj 12:48] =>  0:19
   :END:
Yo he cambiado el color a todos los enlaces (=a=) y me encuentro que hay algunos a los que no se lo quiero cambiar: los que se iluminan mientras estoy tecleando letras al elegir el enlace a seguir.
Pero como no tienen clase asignada los activos (=__conkeror_hint= es para todos) no puedo darles CSS.

*** marcar por CSS los activos
    :CLOCK:
    CLOCK: [2009-11-05 dj 12:59]--[2009-11-05 dj 13:40] =>  0:41
    :END:
De hecho se podría tener todo este sistema de rótulos en CSS en vez de tocar estilo desde JavaScript. Así es más personalizable. 
Y ya hay una parte hecha en CSS (hints.css); lo que hay que hacer es quitar las definiciones de colores desde los .js (elem.style.color etc.)

**** plan
Se puede poner clase .conkeror_hint_link para todos (ahora amarillo) y .conkeror_hint_link_active para el seleccionado/actual (ahora verde).
No hace falta crear clases especiales para imágenes pues eso se puede hacer por img.conkeror_hint_link_selected etc.

**** ¿se puede hacer todo con clases CSS?
Más difícil es iluminar IFRAMEs etc. No sé si se puede hacer por CSS

**** BONUS ¿más o menos velocidad?
No sé si pintar los rótulos por CSS sería más rápido.
Por las pocas pruebas que he hecho, parece que sí.

**** primeras pruebas que van
En hints.css:


.__conkeror_hint_link {
  background-color: blue !important;
  color: white !important;
}

Y luego en hints.js cambios del estilo:
            if (!h.img_hint && h.elem.style) {
                //h.elem.style.backgroundColor = (active_number == cur_number) ? active_hint_background_color : hint_background_color;
                h.elem.className=(active_number == cur_number)?"__conkeror_hint_link_active":"__conkeror_hint_link";

            }

etc.

** BONUS al usar „conkeror „fichero.html“, se confunde y quiere abrir http://fichero.html/
   :CLOCK:
   CLOCK: [2010-01-17 dom 12:39]--[2010-01-17 dom 12:47] =>  0:08
   :END:
Debería añadir file:// según toque

http://bugs.conkeror.org/issue240

** BONUS read_from_x_primary_selection() no coge bien unicode (o UTF-8)
   :CLOCK:
   CLOCK: [2011-05-29 dom 18:20]--[2011-05-29 dom 19:00] =>  0:40
   :END:
Ej. cuando copio desde Emacs (-nw, o sea sin X) la palabra =pewność= y la recupera Conkeror mediante =read_from_x_primary_selection()=, recibe extrañamente =pewno[=, así, con un =[= al final. Pasa lo mismo si la copia desde el mismo Conkeror en vez de desde Emacs.

Visto el <2011-05-29 dom>.

- [ ] Mirar [[file:/w/conkeror/modules/utils.js::function%20read_from_x_primary_selection%20()%20{][file:/w/conkeror/modules/utils.js::function read_from_x_primary_selection () {]]

** BONUS no respeta tabindex (el orden de navegación por campos con el tabulador)
Ej. en duckduckgo, quiero que con un TAB ya me mueva al cuadro de búsqueda (TABINDEX 1), pero hacen falta 3.

- http://duckduckgo.com/?q=a&t=1&kl=es-es

Está =accesibility.tabfocus= en =about:config= (http://kb.mozillazine.org/Accessibility.tabfocus) pero Conkeror no lo sigue pues su TAB va sólo a campos de formulario:
: tab is bound to the command browser-focus-next-form-field in bindings/default/content-buffer/normal.js.
: browser-focus-next-form-field is an interactive command in content-buffer-input.js.
Eso es: [[file:/w/conkeror/modules/content-buffer-input.js]]

- [ ] buscar
- [ ] mandar fallo a Conkeror
- [ ] quejarse a DuckDuckGo. ¿A quién se le ocurre poner el botón de buscar antes que el cuadro de texto?

** BONUS cómo escribir un valor de depuración
: dumpln("hola")
Va.

** Para que use el tema blackened
La siguiente entrada es maléfica:
782a0b9ec087b4e88846a7695aa14cd0700e1134

Puedo usar: git revert 782a0b9ec087b4e88846a7695aa14cd0700e1134
Y seguir usando theme_load("blackened");

Además mis modificaciones incluyen:

cambios a minibuffer.css

 tree.completions treechildren::-moz-tree-row(current) {
-  background-color: blue !important;
+  background-color: #00a !important;
   color: white;
 }

** instalar extensiones (noscript etc.)
http://conkeror.org/Extensions

Poner:
#+BEGIN_QUOTE
<!-- Conkeror -->
<em:targetApplication>
  <Description>
    <em:id>{a79fe89b-6662-4ff4-8e88-09950ad4dfde}</em:id>
    <em:minVersion>0.1</em:minVersion>
    <em:maxVersion>9.9</em:maxVersion>
  </Description>
</em:targetApplication>
#+END_QUOTE
Y borrar los META-INF.

** IS Para que arranque con el xulrunner bueno, cómo hacer el =run-conkeror= o equivalente

*** forma rara y vieja
Tocar el /usr/local/bin/conkeror y añadirle al final:


echo 142857 cambia xr y conkeror
xr=`compgen -f /usr/lib/xulrunner-1.*`
conkeror=/w/conkeror

exec "${xr%/}"/xulrunner "$conkeror"/application.ini "$@"
*** [#A] ∴ invocando yo a xulrunner y pasando application.ini
[[file:/w/conkeror/arranca-conkeror]]:
#+begin_quote
#!/bin/bash
cd
xulrunner-8.0 /w/conkeror/application.ini "$@"
#+end_quote

** cómo obtener el valor del prefijo
#+begin_src javascript
interactive("pruebaprefijo",
    "Da el valor del prefijo (C-u)",
    function (I) {
        var window = I.window;
        I.minibuffer.message("Prefijo: "+I.prefix_argument);
    });
#+end_src

** BONUS [#C] conkeror me muestra automáticamente muchas compleciones en cuadros de texto, y no lo quiero así
    :PROPERTIES:
    :Effort:   12:00
    :END:
No quiero sugerencias en formularios.

- [ ] http://support.mozilla.org/en-US/kb/Options%20window%20-%20Privacy%20panel ← aquí se ve „Remember search and form history“.

** IS no va el sonido en vídeos HTML5 (ej. Youtube)
     CLOSED: [2012-10-02 Втр 21:35]
Uso OSS4.
- Con aoss no se soluciona. 
- poniendo FIREFOX_DSP=aoss tampoco

Ni en conkeror ni en iceweasel ni en chromium…
Bueno, chromium dice:
#+BEGIN_QUOTE
…
nvfx_screen_get_param:95 -  Warning: unknown PIPE_CAP 30
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_card_driver returned error: Нет такого файла или каталога
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_concat returned error: Нет такого файла или каталога
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_refer returned error: Нет такого файла или каталога
ALSA lib conf.c:4720:(snd_config_expand) Evaluate error: Нет такого файла или каталога
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM default
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_card_driver returned error: Нет такого файла или каталога
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_concat returned error: Нет такого файла или каталога
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
…
#+END_QUOTE
He tenido que activar la traducción ALSA→OSS4 con trocito de configuración en [[file:~/.asoundrc]], y ya va.

** sobre el <<<xulrunner>>>: dónde bajarlo, etc
    :CLOCK:
    CLOCK: [2012-10-18 og. 13:55]--[2012-10-18 og. 14:31] =>  0:36
    :END:
- https://developer.mozilla.org/en-US/docs/XULRunner
- https://developer.mozilla.org/en-US/docs/Mozilla/Projects/XULRunner
- no sé cuál uso; parece que el de 52.9.0esr
*** BONUS [#B] ¿cdv? ¿código fuente?
- https://launchpad.net/xulrunner
- https://launchpad.net/xulrunner/trunk
Pero ¬c.

El código está bajable de: http://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/17.0b2/source/

Pero ¿y cdv?
Parece que no…

*** números de versión liados: 1.9.2, 17, …
*** historial de cambios
No encuentro.
- Quizás hay que bajar código fuente de cdv.
- Quizás lista de correo, https://groups.google.com/forum/#!forum/mozilla.dev.platform, pero no

*** [#A] bajar última versión
- http://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/

*** [#C] versión de desarrollo
- http://ftp.mozilla.org/pub/mozilla.org/xulrunner/nightly/latest-trunk/
- http://ftp.mozilla.org/pub/mozilla.org/xulrunner/nightly/
*** MALFAR „xulrunner SDK“, está para bajar
- https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/
- „xulrunner SDK version 41.0.2 will not work with FF 45“, hay que usar versión igual.
*** ¿ha muerto? → no, pero hay que usar el de dentro de Firefox
    :CLOCK:
    CLOCK: [2016-02-16 Tue 19:32]--[2016-02-16 Tue 20:20] =>  0:48
    :END:
- un poco moribundo en 2015: https://groups.google.com/forum/#!topic/mozilla.dev.platform/_rFMunG2Bgw
- aquí dice que ya no ofrecen paquetes: http://ftp.mozilla.org/pub/xulrunner/nightly/latest-trunk/Deprecation_notice.txt
- anuncian m7.2015 que no es prioritario: https://groups.google.com/forum/#!msg/mozilla.dev.platform/_rFMunG2Bgw/C-4PcHj9IgAJ
- [2016-02-16 Tue]: 41.0.2
- [X] probar el de firefox
  - „Firefox (from version 3) ships with a private XULRunner package, which can run any compatible XULRunner application using the -app switch: firefox -app application.ini is equivalent to xulrunner -app application.ini“
  - sí, puedo 44.0.2 así
  - es mucho más rápido
  - hay varias cosas que no van; iré ajustándolo
    - [ ] fuentes mías
    - [ ] muchos avisos
    - [ ] NoScript parece ir, pero el nuevo va a medias y no se deja configurar

** IS [#A] que abra con el programa que toca (ej. pdf con mupdf en vez de con gimp)
   CLOSED: [2013-03-24 Вск 20:44]
    :CLOCK:
    CLOCK: [2013-03-24 Вск 20:30]--[2013-03-24 Вск 20:44] =>  0:14
    CLOCK: [2012-10-28 Вск 13:10]--[2012-10-28 Вск 13:44] =>  0:34
    :END:
- ya lo corregí alguna vez, y se ha vuelto a estropear al poner xulrunner nuevo

Curioso que esto da „evince“:
: external_content_handlers.get("application/pdf")
Y sin embargo se abre gimp.
Y no veo „gimp“ ni por /etc/ ni en mi ~/.mailcap ni en tablas MIME de conkeror ni en fuente de conkeror…

„Removing the pdf mimetype from /usr/share/applications/gimp.desktop does seem to help...“
Probado, no.

Solución: a [[file:~/.local/share/applications/mimeapps.list]] añadirle esto:
#+BEGIN_QUOTE
[Added Associations]
application/pdf=mupdf.desktop;
#+END_QUOTE
Imagino que eso refiere a /usr/share/applications/mupdf.desktop
Con esto va inmediatamente.

** BONUS [#A] hace una especie de „caché DNS“ demasiado agresiva, de forma que un error de conexión deja muchos dominios inaccesibles cuando la conexión vuelve
- [ ] http://www.tech-faq.com/how-to-flush-dns.html
- hay extensión, https://addons.mozilla.org/en-us/firefox/addon/dns-flusher/, pero no es justo para lo que busco
- [X] poner en about:config: network.dnsCacheExpirationGracePeriod a 0. Pruebo esto y lo reabro, pero no cambió nada: una desconexión se hizo perenne
- [ ] „Enter network.dnsCacheExpiration as the preference name and 0 as the integer value“ ← lo pruebo

*** dicen que el cuadro de „borrar datos“ tiene opción para borrar caché DNS
- http://stackoverflow.com/questions/13063496/firefox-invalidate-dns-cache

** BONUS evitar que una web me cambie las funciones de mis teclas
   :CLOCK:
   CLOCK: [2016-02-27 Sat 03:48]--[2016-02-27 Sat 04:23] =>  0:35
   CLOCK: [2015-12-23 Wed 17:20]--[2015-12-23 Wed 17:47] =>  0:27
   :END:
Ej. es eso de „access keys“; „shortcut keys“ le llaman.

- Ej. de página donde pasa: entrar en https://github.com/ y darle a la m. Sale un cuadro con chuleta de la sintaxis.
- Ej. ahora https://ankiweb.net/shared/decks/ me roba teclas „b“, „s“ etc.

Es muy molesto. Quiero que las páginas me definan /ninguna/ tecla, pues ya me defino yo las que quiero.

Larga discusión sin resultados pues es dilema difícil: https://bugzilla.mozilla.org/show_bug.cgi?id=380637

Puedo:
- buscarme otras teclas que no se superpongan
- crear modo especial para esta página, o algo así
- evitar el robo de teclas en todas las páginas, con alguna preferencia
- cambiar código fuente de conkeror/xulrunner para evitar ceder el control de teclado a la página
- usar extensión/script que las recupera
  - con Greasemonkey: http://superuser.com/questions/168087/how-to-forbid-keyboard-shortcut-stealing-by-websites-in-firefox
- ∴ desactivar JS
- por ahora, usar la tecla con prefijo („u“), eso activa mi versión en vez de la de la web

*** conkeror tiene „modos de página“ pero no quiero definir un modo para cada página molesta
- github tiene uno, pero activarlo es aún peor
*** puedo usar noscript

** es demasiado verborreico pues me registra errores de páginas web (que yo no puedo controlar) mezclado con errores del propio conkeror
   :CLOCK:
   CLOCK: [2016-02-17 Wed 12:15]--[2016-02-17 Wed 12:40] =>  0:25
   :END:
#+BEGIN_EXAMPLE
JavaScript strict warning: https://startpage.com/adsense/search/async-ads.js, line 297: SyntaxError: test for equality (==) mistyped as assignment (=)?
JavaScript strict warning: https://startpage.com/adsense/search/async-ads.js, line 52: ReferenceError: reference to undefined property a.waitForAds
JavaScript strict warning: https://startpage.com/adsense/search/async-ads.js, line 246: ReferenceError: reference to undefined property window.CSE_OPTIONS_
JavaScript strict warning: https://startpage.com/adsense/search/async-ads.js, line 252: ReferenceError: reference to undefined property u.ctcIconFormat
JavaScript strict warning: https://startpage.com/adsense/search/async-ads.js, line 178: ReferenceError: reference to undefined property a.clicktrackUrl
[…]
JavaScript strict warning: https://startpage.com/js/result_header_new.js?v=d85aee1303aea48fb0adef596918449c, line 18: ReferenceError: assignment to undeclared variable UNIT_NONE
Console error: [JavaScript Warning: "Penggunaan getPreventDefault() sudah usang. Gunakan defaultPrevented." {file: "https://startpage.com/js/result_header_new.js?v=d85aee1303aea48fb0adef596918449c" line: 3}]
  Category: DOM Core
#+END_EXAMPLE
- javascript.options.showInConsole: no ayuda
** una página me da „401 - unauthorized“ sin pedirme la clave, y no consigo que me la pida. ¿Cookies?
   :CLOCK:
   CLOCK: [2017-05-24 Wed 00:30]--[2017-05-24 Wed 00:50] =>  0:20
   :END:
Ej. el nivel 9 de Python Challenge.
+Quizás es mala configuración del servidor suyo…+ En otros navegadores sí que me pide clave.
** en algunas páginas veo fuente mala, por ejemplos los números en secciones de github aparecen dentro de circulitos azules (bueno, color turquesa), con número escrito en blanco
   :CLOCK:
   CLOCK: [2024-01-07 Sun 18:50]--[2024-01-07 Sun 20:25] =>  1:35
   :END:
- https://askubuntu.com/questions/1041806/firefox-shows-numbers-and-symbols-as-emoji-how-to-disable-this, *justo esto*, ver ahí imagen
- páginas sueltas en que pasa
  - https://github.com/tailscale/tailscale/issues/8987
  - https://live.euronext.com/en/product/equities/FR0000052292-XPAR
- es por CSS que hay en:
  : <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-6b3d1b701ef1.css" />
- en concreto es por esta línea
  #+BEGIN_QUOTE css
      body{
          font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";
      }
  #+END_QUOTE
- sólo esto ya causa el destrozo que estoy localizando:
  #+BEGIN_QUOTE css
      body{
          font-family:"Apple Color Emoji";
      }
  #+END_QUOTE
- este fichero mínimo reproduce el problema
  #+BEGIN_QUOTE html
<!DOCTYPE html>
<html>
  <head>
    <style type="text/css">
      body{
          font-family:"Apple Color Emoji";
      }
    </style>
  </head>

  <body>
    <p>#8987</p>
  </body>
</html>
  #+END_QUOTE
- parece ser que no tengo las fuentes anteriores a esa mencionada, y por tanto se está usando ésa
  - pero =sans-serif= sale listada y sí la tengo, obviamente
- me parece rarito eso de poner fuente de sólo-emojis al =body=
  - https://en.wikipedia.org/wiki/Apple_Color_Emoji
- atención: tampoco tengo „Apple color emoji“. El problema pasa igual si digo que use: =font-family:"emoji";=
  - o sea, que de alguna manera detecta la palabra „emoji“ y pasa a usar fuente rara
- +pruebas de solución+ instalar más
  - instalo fonts-noto, a ver qué pasa. Entonces está disponible (y ẽ Firefox último la toma/prefiere), pero conkeror no la prefiere
  - instalo fonts-roboto. Me destroza todo; ∴ quitarlo
- https://bbs.archlinux.org/viewtopic.php?id=289321, muy parecido, y mencionan „Apple Color Emoji“ también como culpable
- estoy usando =font-family:"Noto Sans",sans-serif,"Apple Color Emoji";=, y tengo Noto Sans, y sin embargo prefiere usar su fuente de emojis, sólo porque ve la palabra emoji
  - ~~~ https://bugzilla.mozilla.org/show_bug.cgi?id=1460445
- ∴ ¿es por EmojiOne? Sí
  - ahora „joypixels“
  - EmojiOneMozilla.ttf
  - ẽ [[file:/w/firefox-52.9.0esr/fonts/EmojiOneMozilla.ttf]]
  - la miro, y parece otra fuente
  - pero dicen que sí que es por esto
  - *desactivo acceso de lectura a EmojiOneMozilla.ttf*, y esto mejora todo
  - pruebo esto (o sea pongo TwemojiMozilla.ttf, que es más nueva), pero entonces salen glifos en blanco. Es peor
    : cp /w/firefox/fonts/TwemojiMozilla.ttf /w/firefox-52.9.0esr/fonts
  - ∴ por tanto simplemente borrar EmojiOneMozilla, y no poner sustituto. Por ahora
  - al borrar EmojiOneMozilla, queda todo más monocromo (blanco/negro, contornos. Se pierden iconos en color, algunos), y algunos iconos demasiado grandes. También va todo algo más rápido
    - ejemplo de cuáles salen enormes: „🟤, 🟡, 🟢“
- quizás he de poner algo en =font.name-list.emoji= (ẽ a „Twemoji Mozilla“)
  - o =layout.css.font-variant-emoji.enabled= (false)
  - pruebo ambas, no ayudan
- 
   #+BEGIN_QUOTE
 : dc; ~ ; fc-match "emoji"            
 NotoColorEmoji.ttf: "Noto Color Emoji" "Regular"
   #+END_QUOTE
  - /usr/share/fonts/truetype/noto/NotoColorEmoji.ttf
    - fontforge/trufont no lo abren bien
  - ¿es esto lo que estoy viendo? ∴ No, „Noto Color Emoji“ tiene números negros y sin círculo azul
- ¿quizás es que el proceso no tiene acceso a más fuentes?
  - file:///usr/share/fonts/truetype/noto/
  - no, no es esto. Tiene acceso
- ¿será por pruebas mías? (por haber colocado fuentes que he creado yo, en sitios especiales
- quizás es por los ajustes que le he puesto, ẽ =gfx.font_rendering.graphite.enabled= (falso), etc. Pero no quiero cambiarlos
- ∴ complicado probar todo esto. Puede ser por muchas cosas, y además la configuración ha ido cambiando mucho en el tiempo y cuesta comparar cosas
** IS no arranca conkeror, falta un .so. libdbus-glib-1.so.2
   CLOSED: [2024-10-21 Mon 20:22] SCHEDULED: <2024-10-21 Mon>
   :CLOCK:
   CLOCK: [2024-10-21 Mon 20:14]--[2024-10-21 Mon 20:22] =>  0:08
   :END:
- muy extraño, me pasó [2024-10-21 Mon], pero la última vez que toqué lo de libdbus fue en julio
- 
   #+BEGIN_QUOTE
 XPCOMGlueLoad error for file /w/firefox-52.9.0esr/libxul.so:
 libdbus-glib-1.so.2: cannot open shared object file: No such file or directory
 Couldn't load XPCOM.
   #+END_QUOTE
- ¿alguna vez lo he tenido?
- ah, por lo visto hay que instalar libdbus-glib-1-2
  - por lo visto lo desinstalé en „Date:   Fri Aug 18 17:52:56 2023 +0300“ ← eso es de hace mucho, ¿cómo es que me estaba funcionando?
** arranca con página en blanco en vez de mi configuración
   :CLOCK:
   CLOCK: [2025-07-06 Sun 15:56]--[2025-07-06 Sun 16:00] =>  0:04
   :END:
- era por errar de sintaxis en ~/.conkerorrc, en expresión regular
* ideas para cosas nuevas
** extensiones y utilidades de Firefox que me faltan (o no)
- firebug: se puede, ver ahí
- bugmenot: ya lo tengo

*** tiene gestor de permisos
M-x permission-manager
Ahí puedo bloquear cuquis (cookies), popups, imágenes de ciertos dominios.
¡Funciona!
*** consola de errores de javascript
Ver js-console que añadí.
Malo: funciona a medias.

** BONUS recargar cada cierto tiempo
   :CLOCK:
   CLOCK: [2010-01-11 lun 10:49]--[2010-01-11 lun 11:14] =>  0:25
   :END:
He mandado:
http://bugs.conkeror.org/issue177

Mensajes relacionados:
- http://www.mozdev.org/pipermail/conkeror/2008-October/001172.html: „This sounds like a good candidate for a page-mode“. Sugiere mirar [[file:/w/conkeror/modules/page-modes/]] (aunque ya no hay media.js)

** IS [#A] reordenar pestañas
   CLOSED: [2012-01-30 Пнд 18:02]
   - CONCLUSIÓN escrita el [2012-01-30 Пнд 18:02] \\
     ya está en el oficial
   :CLOCK:
   CLOCK: [2009-04-16 dj 19:48]--[2009-04-16 dj 21:48] =>  2:00
   :END:
    - CONCLUSIÓN escrita el [2009-04-16 dj 21:48] \\
      hice lo que pude; ahora me toca esperar y corregir mínimamente

Lo he probado en [[file:~/.conkerorrc][file:~/.conkerorrc::function test_move_tab_left window]]
Y lo he enviado a conkeror.
*** IS mandar como fallo
     CLOSED: [2009-04-27 dl 20:19]
     CLOCK: [2009-04-27 dl 20:09]--[2009-04-27 dl 20:19] =>  0:10
http://bugs.conkeror.org/issue151

*** MALFAR ver si me ayudan un poco con lo de las pestañas (ver si resuelven el fallo)
    SCHEDULED: <2009-05-15 dv> CLOSED: [2009-05-18 dl 20:18]
    - CONCLUSIÓN escrita el [2009-05-18 dl 20:18] \\
      Lo abandono porque no sé mucho; ya envié el fallo y quizás más adelante recupero el código.

*** IS parche de arlinius, lo implementa
     CLOSED: [2011-07-09 sáb 00:53] 
     - CONCLUSIÓN escrita el [2011-07-09 sáb 00:53] \\
       el parche de John Foerch sucede a éste y corrige lo que dije
    :CLOCK:
    CLOCK: [2011-01-28 dv 08:05]--[2011-01-28 dv 09:13] =>  1:08
    :END:
#+begin_quote
Tabs no longer have closures on their buffers. Instead, a tab's
buffer is now stored as a property of the tab. Also fixed some
whitespace in tab.addEventListener calls.

The buffer container now has a buffer_ordering list which
specifies the order of the buffers used for buffer_next, rather
than using the order of the buffer vbox elements in the
buffer-container deck directly.

A new function, buffer_move_forward, has been added. This
function moves a buffer forward in its window's buffer
container. The interactive commands buffer-move-forward and
buffer-move-backward have also been added. There is a new hook,
move_buffer_hook, which is run every time the order of buffers is
changed. Its argument is the buffer that was moved.

new-tabs.js uses move_buffer_hook to update the index numbers
shown on the tabs as well as the ordering of the tabs. Tab
ordering is controlled by setting the ordinal attribute on the
tab.

#+end_quote

Respondo:
#+begin_quote
Thanks for implementing this. I have been testing it and it works pretty well.
  - I would add  this.add_hook("move_buffer_hook") in buffer_count_widget (mode-line.js) to update the „[13/13]“ part in the modeline.
  - Each reordering should be written to the session file. Now, if I change the order of a tab and close Conkeror without adding/removing other tabs, the original ordering is saved. So session_auto_save_save should be run in move_buffer_hook too
  - It doesn't work when the tab bar is disabled, due to move_buffer_hook always calling tab_bar_move_buffer. I suppose it could rearrange buffers so that you'll notice those invisible changes when you turn the tab bar on again.
  
#+end_quote

*** IS John lo implementó en rama buffer-ordering; revisar
     CLOSED: [2012-01-30 Пнд 18:02] SCHEDULED: <2012-02-09 Чтв>
     - CONCLUSIÓN escrita el [2012-01-30 Пнд 18:02] \\
       integrada en rama central
    :CLOCK:
    CLOCK: [2011-07-09 sáb 00:27]--[2011-07-09 sáb 01:05] =>  0:38
    :END:
El <2011-05-14 sáb>.
- „The keys M-N and M-P are used to move buffers manually through the spatial buffer list.“
- [X] probar un tiempo
- [ ] apuntar fallos
- [ ] comentar

** inspector de DOM y CSS fácil de usar
- Está DOM Inspector, pero algo como Firebug es más fácil de usar.
- de momento uso el de firefox

** IS tecla en conkeror para traducir página
   CLOSED: [2010-04-22 dj 09:19]
   :CLOCK:
   CLOCK: [2010-04-22 dj 08:44]--[2010-04-22 dj 09:19] =>  0:35
   :END:
** IS tecla para traducir palabra, detectando el idioma de origen y enviando al diccionario apropiado
   CLOSED: [2010-06-11 dv 13:30]
   :CLOCK:
   CLOCK: [2010-06-11 dv 13:17]--[2010-06-11 dv 13:30] =>  0:13
   :END:

** BONUS quiero una tecla nueva, „a“, para hacer una acción con un enlace, por ejemplo pasarlo a un programa mío
   :CLOCK:
   CLOCK: [2022-03-14 Mon 00:20]--[2022-03-14 Mon 00:33] =>  0:13
   :END:
- igual que tengo „c“ para copiar o „d“ para descargar
- „a“ lo pasará a ~/ut/a, que ya procesa la URL
- para empezar: de commands.js
  #+BEGIN_QUOTE
interactive("copy", null,
    alternates(copy_text, copy_text_append),
    $browser_object = browser_object_links);
  #+END_QUOTE
- v1
  #+BEGIN_QUOTE js
function acción_con_enlace (I) {
    var element = yield read_browser_object(I);
    browser_set_element_focus(I.buffer, element);
    var text = browser_element_text(I.buffer, element);
    text = "~/ut/a \""+ "(aquí poner „text“ pero sin comillas ni caracteres ¬URL)" +"\"";
    // aquí viene el problema de lanzar comando
    // writeToClipboard(text);
    I.buffer.window.minibuffer.message("Lanzada acción con: "+text);
}

interactive("acción", null,
    acción_con_enlace,
    $browser_object = browser_object_links);
  #+END_QUOTE
- problema: las restricciones de seguridad que he puesto a conkeror implican que a conkeror le costará bastante lanzar procesos

** [#C] desplazamiento horizontal en conkeror
    :CLOCK:
    CLOCK: [2010-04-14 dc 11:07]--[2010-04-14 dc 11:18] =>  0:11
    CLOCK: [2010-01-24 dom 11:53]--[2010-01-24 dom 12:07] =>  0:14
    CLOCK: [2010-01-24 dom 11:13]--[2010-01-24 dom 11:53] =>  0:40
    :END:
Ver [[file:~/.conkerorrc][file:~/.conkerorrc::moverse horizontalmente hacia derecha e izquierda]]

#+BEGIN_SRC js
// Pues ya está esto, que va bien.
//    define_key(keymap, "C-b","cmd_scrollLeft");
//    define_key(keymap, "C-f","cmd_scrollRight");
// Pero además definiré unos equivalente a C-uC-uC-b y C-uC-uC-f, que se mueven más rápido. Los pongo en Meta
#+END_SRC

No encuentro función para hacer „→“ aunque la tecla „→“ va porque está definida como builtin_command.

Más difícil de lo esperado. Necesito ejemplos de extensión de una función. O preguntar a Conkeror…

** ATENDAS mapa para modificar el directorio de destino de descargas
   :CLOCK:
   CLOCK: [2010-12-16 dj 08:36]--[2010-12-16 dj 08:40] =>  0:04
   CLOCK: [2010-08-30 dl 12:46]--[2010-08-30 dl 12:56] =>  0:10
   :END:

Mandado a Conkeror el <2010-08-30 dl>:
„Be able to select the download directory programmatically“
http://bugs.conkeror.org/issue294

Quizás es útil la resolución que se hizo para http://bugs.conkeror.org/issue271 (refactorizando suggest_file_name).

** BONUS función para atrás+cerrar en botón del ratón
   :CLOCK:
   CLOCK: [2010-11-12 dv 08:30]--[2010-11-12 dv 09:39] =>  1:09
   CLOCK: [2010-11-11 dj 19:35]--[2010-11-11 dj 20:07] =>  0:32
   :END:
Ya que no uso mucho el ratón, puedo asignar funciones útiles a sus botones. Además las necesito.

Ej.
- [ ] clic derecho en fondo:
  - [X] ir atrás
  - [ ] si ya no se puede ir más atrás, cerrar búfer → esto deshace en 1 paso la navegación global
- [ ] clic derecho en enlace: copiar destino del enlace

Interesante:
- [[file:/w/conkeror/modules/extensions/dom-inspector.js::window.addEventListener("click",%20handler,%20true)%3B][file:/w/conkeror/modules/extensions/dom-inspector.js::window.addEventListener("click", handler, true);]]

Quiero:
- [X] que no afecte a barra de pestañas
- [X] que se active para todos los búfers
- [ ] que se pueda desactivar (ej. conmutar globalmente) ya que alguna página me puede exigir el clic derecho (aunque no debería)

*** [#C] primera prueba, detecta el clic derecho y va atrás
Funciona
#+begin_src javascript
interactive("deshaznave",
    "Atrás+cerrar con el botón derecho del ratón. A completar",
    function (I) {
        var window = I.window;
        function handler (e) {
            if (e.button == 2) { // 2==derecho
                e.preventDefault();
                e.stopPropagation();
                window.removeEventListener("click", arguments.callee, true);
                go_back(I.buffer,I.p);
            }
            // si no, nada
        }
        window.addEventListener("click", handler, true);
        I.minibuffer.message("he activádome e iré atrás tras próximo clic.");
    });

#+end_src

Pero va atrás en el búfer original, no en el actual.
Y se desactiva.
Y actúa también sobre barra de pestañas.

*** [#B] versión mejor, va atrás en el búfer actual, se activa para todos los búfers, dura; funciona muy bien
#+begin_src javascript
function clic_derecho(e){
    // va a la página anterior
    if (e.button == 2) { // 2==derecho
        e.preventDefault();
        e.stopPropagation();
        e.currentTarget.goBack();
    }
}
function activa_clic_derecho_especial (buffer) {
    buffer.browser.addEventListener("click", clic_derecho, true);
}
add_hook("create_buffer_hook", activa_clic_derecho_especial);
interactive("desactiva-clic-derecho-especial-en-el-b-actual",
    "Permite que el clic derecho sea tratado por la página del búfer actual (en vez de capturarlo); no requiere recarga",
    function (I) {
        I.window.buffers.current.browser.removeEventListener("click",clic_derecho,true);
    });
// Para desactivar globalmente (en nuevos búfers):
// remove_hook("create_buffer_hook",activa_clic_derecho_especial);

#+end_src

Le falta: matar búfer cuando ya no se puede ir atrás.
** moverse entre pestañas mediante el ratón pero sin clicar la barra de pestañas
   :CLOCK:
   CLOCK: [2018-08-25 Sat 12:52]--[2018-08-25 Sat 13:05] =>  0:13
   :END:
** BONUS [#A] reabrir la última pestaña cerrada (deshacer el cierre de un búfer)
   :CLOCK:
   CLOCK: [2014-06-26 Thu 14:40]--[2014-06-26 Thu 15:00] =>  0:20
   :END:
Tal como hace Firefox.

Cuidado:
- la pestaña pudo haber sido la última de una ventana; entonces ¿hay que recrear la ventana?
- hay que restaurar también todo el historial de esa pestaña, para que se pueda volver atrás/adelante como si nada hubiera pasado
- se podría hacer que descierres sucesivos vayan reabriendo pestañas más viejas, hasta volver a tener todas
- una pestaña descerrada puede ser cerrada otra vez. Y después descerrada otra vez, etc.
- creo que es mejor no grabar todo lo descerrable en el fichero de sesiones
*** hay solución en JS en wiki
- parece que esto va: http://conkeror.org/Tips#Restore_Killed_Buffer_Url
- estaría bien integrarlo en conkeror
- me dejó de funcionar (=TypeError: this.refresh is not a function=)
  - Y es que esto ya falla (hasta con xulrunner 30):
  : all_word_completer($completions = ['un','dos','tres'])

** BONUS editor de URL que no codifique los caracteres no ingleses
Ahora se ven URLs muy raras, como:
: https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%80%D0%BE%D0%BA%D0%BA%D0%B0%D0%BD%D1%81%D0%BA%D0%B0%D1%8F_%D0%9C%D0%B5%D1%81%D0%B5%D1%82%D0%B0
Quiero tecla que muestre los signos Unicode reales.

También afecta esto a signos conocidos para anglófonos: comilla „'“, espacio „ “, …

- [ ] crear tecla que desescapa, edita y vuelve a escapar
* sobre velocidad
** una pestaña puede colgar todo el navegador; eso es malo
    :CLOCK:
    CLOCK: [2009-12-23 mié 16:07]--[2009-12-23 mié 18:54] =>  2:47
    CLOCK: [2009-12-23 mié 10:03]--[2009-12-23 mié 13:27] =>  3:24
    CLOCK: [2009-12-23 mié 09:45]--[2009-12-23 mié 10:02] =>  0:17
    CLOCK: [2009-12-22 mar 11:46]--[2009-12-22 mar 12:28] =>  0:42
    :END:
Al menos en la versión del <2009-12-22 mar> con xulrunner 1.9.1. Sin /plugins/.

*** IS fórmula para reproducir esto
Me pasa cuando tengo muchas pestañas abiertas (ej. >100) y una de ellas está haciendo cálculos complejos o está mal diseñada y simplemente está perdiendo el tiempo (*mi* tiempo).
Entonces se ve el proceso xulrunner-bin con alta carga de CPU (no siempre 100%).

No pasa sólo por abrir conkeror con la página de bienvenida (eso era otro fallo de xulrunner).
No es que sea =xulrunner= (Gecko) quien consume la CPU, sino que es quien /permite/ que la página la consuma.

**** URLs
Páginas que especialmente roban la CPU del visitante ([[id:c5m2je81pue0][encontradas así]] tras un caso real):
- http://www.acciona.es/ el <2009-12-23 mié>: me gasta entre un 30 y un 70% de CPU sólo ésta, y no baja ni al cabo de un buen rato
- http://www.charlierose.com/ el <2009-12-23 mié> causa bastantes picos, quizás sólo al apuntar a la parte superior

He descubierto más [[id:xhcl5ih0que0][con el prita que he hecho]].

*** limitar los recursos a cada pestaña
Chromium separa más los páginas y limita sus privilegios; ese enfoque está bien.

Y si ya se acepta que página=programa, también podría correr cada página como un proceso distinto…

*** BONUS de momento hace falta una forma de ver qué pestaña está consumiendo más CPU

**** trazar sus llamadas a sistema
- ltrace: lo hice y murió (SIGTRAP).
- strace: con ello veo demasiada información
- gdb: veo que está entre cosas de XUL y de JS (obvio), ej. libxul.so y función JS_EvaluateUCScriptForPrincipals

Nada útil.
**** ¿depurar xulrunner?
**** MALFAR pedir en lista; estaría bien integrarlo en Conkeror
     SCHEDULED: <2009-12-24 jue> CLOSED: [2010-01-15 vie 17:19]
     - CONCLUSIÓN escrita el [2010-01-15 vie 17:19] \\
       de momento parece que no hay interés: no ha habido respuesta

Enviado el <2009-12-22 mar 12:23>
#+BEGIN_EXAMPLE
…
  sometimes when I have many tabs open (>100) I notice that Conkeror is using much CPU (e.g. 35%) when idle. CPU usage drops to normal level if by chance I happen to close the right buffer, so it's a matter of a broken webpage, not of Conkeror itself.
  It would be nevertheless useful to know which amount of activity is producing each buffer, similar to what "top" does for processes.
  Can Conkeror provide this debug information?

#+END_EXAMPLE

Y anuncié mi prita.

**** IS [#A] he hecho un programita para medir el tiempo de CPU gastado por cada página abierta
      :PROPERTIES:
      :ID:       xhcl5ih0que0
      :END:
Está en [[file:../scripts/cpu_spent_by_buffers.sh][cpu_spent_by_buffers.sh]]

**** BONUS algo parecido: medir cuánta RAM consume cada pestaña
     :CLOCK:
     CLOCK: [2016-02-28 Sun 08:35]--[2016-02-28 Sun 08:50] =>  0:15
     :END:
- lo añadieron en Firefox 16, en about:memory
- [ ] https://bugzilla.mozilla.org/show_bug.cgi?id=687724
***** ¿qué es eso de js-non-window que tanto ocupa? ¿La interfaz?
#+BEGIN_QUOTE
630.78 MB (100.0%) -- explicit
├──362.77 MB (57.51%) -- js-non-window
│  ├──191.05 MB (30.29%) -- runtime
│  │  ├──168.54 MB (26.72%) ── script-data
│  │  ├───16.10 MB (02.55%) ── atoms-table
│  │  └────6.40 MB (01.02%) ++ (11 tiny)
│  ├──106.20 MB (16.84%) -- zones
│  │  ├───75.75 MB (12.01%) -- zone(0x7fb77d733000)
│  │  │   ├──75.55 MB (11.98%) -- strin
…
#+END_QUOTE
Quizás es JS viejo de páginas cerradas.
***** ¿y qué es lo de „ghost“? Me muestra páginas ya cerradas
#+BEGIN_EXAMPLE
1,225.37 MB (100.0%) -- explicit
├────292.86 MB (23.90%) -- window-objects
│    ├──191.85 MB (15.66%) -- top(none)
│    │  ├──183.57 MB (14.98%) -- ghost
│    │  │  ├──109.95 MB (08.97%) ++ (36 tiny)
│    │  │  ├───25.54 MB (02.08%) -- window(https://openedx.slack.com/messages/C2NA0US41/)
│    │  │  │   ├──13.22 MB (01.08%) ++ js-compartment(https://openedx.slack.com/messages)
│    │  │  │   └──12.33 MB (01.01%) ++ (3 tiny)
│    │  │  ├───20.89 MB (01.70%) -- window(https://docs.google.com/spreadsheets/d/1x8BUh2ik6eXisJec142857xFI4y2KRglh7IWQgyDfPs/edit#gid=457748269)
│    │  │  │   ├──13.54 MB (01.10%) -- js-compartment(https://docs.google.com/spreadsheets/u/1/d/1x8BUh2ik6eXisJec142857xFI4y2KRglh7IWQgyDfPs/edit#gid=457748269)
│    │  │  │   │  ├──12.96 MB (01.06%) ++ classes
│    │  │  │   │  └───0.58 MB (00.05%) ++ (5 tiny)
│    │  │  │   └───7.35 MB (00.60%) ++ (3 tiny)

#+END_EXAMPLE
Esto con Slack, Google etc. cerrado. desde hace días.

Si clico „Free memory“ se soluciona.

*** soluciones temporales para descubrir cuál es
     :PROPERTIES:
     :ID:       c5m2je81pue0
     :END:
- salgo del navegador; se guarda mi sesión en el fichero =sessions/auto-save=
- aparto este fichero para entrar en un conkeror vacío
- voy cargando cada URL de ese fichero, a mano, hasta ver cuál es la que causa la alta carga

Lo he automatizado [[id:xhcl5ih0que0][con un programita]].

** ¿cómo puedo medir la velocidad de renderizado de páginas del motor actual?
Yo veo que va lento y a golpes, pero me gustaría cuantificarlo.
Sé que hay cierto tipo de páginas que se le atragantan a Gecko (ya sin Javascript), como ésas del =background:fixed= cuyo informe de fallo está abierto desde hace mucho…

Con esto lo que quiero es ver si la lentitud de renderizado es debida a mi ordenador o a Gecko; así sabré cuál de los dos toca mejorar.

** motores alternativos a xulrunner que se puedan integrar en la interfaz de Conkeror
*** minno (con WebKit)
#+BEGIN_QUOTE
As a sidenote, a few Conkeror developers are working on a WebKit-based
browser codenamed Minno (http://sourceforge.net/projects/minno/) which
will use Gambit Scheme instead of JavaScript and will probably be
lightning-fast in comparison. We are all looking forward to seeing
where that project goes!
#+END_QUOTE

*** Xulrunner ha de mejorar el motor JavaScript también
** está creando fichero muy grande =places.sqlite= que creo que ralentiza
   :CLOCK:
   CLOCK: [2013-08-20 Sel 14:31]--[2013-08-20 Sel 14:42] =>  0:11
   :END:
Son del historial etc.

- se puede hacer „VACUUM“: http://mozillalinks.org/2009/07/vacuum-your-firefox-databases-for-better-performance/
  - con esto pasé de 20 Mb a 11 Mb. Pero al rearrancar volvió a hacerse de 20 Mb
- borrarlo. Pero al iniciar se creó uno de 10 Mb

- ∴ parece que se crea en bloques de 10 Mb y no se puede cambiar. Hay que aguantarse o evitar Gecko…

* estropeos imprevistos y puntuales
  :CLOCK:
  CLOCK: [2010-01-10 dom 17:54]--[2010-01-10 dom 17:57] =>  0:03
  :END:
** IS la tecla o abre el enlace enfocado, pero lo que yo le asigné fue scroll_up
   CLOSED: [2009-11-06 dv 09:58]
   :CLOCK:
   CLOCK: [2009-11-06 dv 09:30]--[2009-11-06 dv 09:43] =>  0:13
   :END:

Use this .conkerorrc with latest conkeror:
:      define_key(content_buffer_normal_keymap, "o", "cmd_scrollPageUp");
:      define_key(content_buffer_normal_keymap, "e", "cmd_scrollPageDown");

Open it. Both keys can scroll the web page correctly.
Now do the drag+drop action on any link so that it gains focus (you'll see the dashed border).
Press "o" then. The link is opened in a new window, instead of scrolling.

Culpable: ./modules/bindings/default/content-buffer/anchor.js:
: define_key(content_buffer_anchor_keymap, "o", "follow-new-buffer",
:           $browser_object = browser_object_focused_element);

Por tanto se soluciona con:
: undefine_key(content_buffer_anchor_keymap, "o"); //era F

** IS no arranca conkeror después de haber actualizado a xulrunner de Debian
     CLOSED: [2010-01-10 dom 23:39]
     - CONCLUSIÓN escrita el [2010-01-10 dom 23:40] \\
       ya lo arreglé para mí; y ya han anunciado algunas correciones para Debian+Ubuntu. Si necesitan alguna prueba más ya me lo dirán
    :CLOCK:
    CLOCK: [2010-01-10 dom 17:50]--[2010-01-10 dom 17:53] =>  0:03
    CLOCK: [2010-01-10 dom 16:40]--[2010-01-10 dom 17:50] =>  1:10
    CLOCK: [2010-01-10 dom 10:50]--[2010-01-10 dom 11:29] =>  0:39
    :END:

#+BEGIN_EXAMPLE
After I upgraded xulrunner 1.9.1.6-1 from Debian's „testing“ archive, conkeror no longer starts:

./contrib/run-conkeror

(xulrunner-bin:22326): GLib-WARNING **: g_set_prgname() called multiple times
Error initializing.
NS_ERROR_XPC_GS_RETURNED_FAILURE: Component returned failure code: 0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService]
null()@chrome://conkeror/content/history.js:10
Console error: [JavaScript Error: "conkeror.handle_command_line is not a function" {file: "file:///Werkstatt/conkeror/components/commandline.js" line: 18}]
  Category: XPConnect JavaScript

#+END_EXAMPLE

Mandado a lista

Probando:
: ＃ ~/.conkeror.mozdev.org/conkeror/hgwfry3w.default ; for a in *; do conmuta $a; echo ocultado $a, aprieta enter para conkeror; read; conkeror; rm -rf $a; conmuta $a; done



- Candidatos: places.sqlite compreg.dat extensions.cache extensions.ini extensions.rdf localstore.rdf places.sqlite prefs.js XPC.mfasl xpti.dat
- Culpable: places.sqlite

#+BEGIN_EXAMPLE
  Removing ~/.conkerorrc makes no difference.
  But removing ~/.conkeror.mozdev.org does: without that profile, it starts correctly (and creates a new profile).
  Carefully removing each file independently I found that the file places.sqlite-journal was the culprit:


~/.conkeror.mozdev.org/conkeror/hgwfry3w.default$> ll places.sqlite*
-rw-r--r-- 1 dc dc 21762048 ene  9 04:18 places.sqlite
-rw-r--r-- 1 dc dc      512 ene  9 10:38 places.sqlite-journal

conkeror                             # Doesn't run
sqlite3 places.sqlite3 ".schema"     # Says: Error: disk I/O error
rm places.sqlite-journal
sqlite3 places.sqlite3 ".schema"     # Now it shows its contents (~10 tables)
conkeror                             # And it runs, with my old whole profile


  I don't know why that database is corrupt. Is there something I can do to find it?
#+END_EXAMPLE

** IS no arranca por libxpcom.so
#+BEGIN_EXAMPLE
? ~ ; /usr/lib/xulrunner-10.0/xulrunner-bin /w/conkeror/application.ini 
/usr/lib/xulrunner-10.0/xulrunner-bin: error while loading shared libraries: libxpcom.so: cannot open shared object file: No such file or directory
? ~ ; ldd /usr/lib/xulrunner-10.0/xulrunner-bin
    linux-vdso.so.1 =>  (0x00007fff9f4ad000)
    libxpcom.so => not found
    libmozalloc.so => not found
    libxul.so => not found
    libplc4.so.0d => /usr/lib/x86_64-linux-gnu/libplc4.so.0d (0x00007fe605f40000)
#+END_EXAMPLE

Lo soluciono arrancando con:
: LD_LIBRARY_PATH=/usr/lib/xulrunner-10.0/ /usr/lib/xulrunner-10.0/xulrunner-bin /w/conkeror/application.ini

** IS no restaura la sesión y arranca vacío
     CLOSED: [2012-08-28 ar. 11:32]
Quizás porque lo maté a medias una vez que estaba arrancando.
#+BEGIN_QUOTE
: dc; ~ ; conkeror
SyntaxError: JSON.parse: unexpected end of data
chrome://conkeror/content/session.js:211
session_read([object XPCWrappedNative_NoHelper])@chrome://conkeror/content/session.js:211
()@chrome://conkeror/content/session.js:432
(true)@chrome://conkeror/content/mode.js:27
@chrome://conkeror/content/session.js:456
load1("chrome://conkeror/content/session.js","chrome://conkeror/content/")@file:///w/conkeror/components/application.js:108
("session.js")@file:///w/conkeror/components/application.js:160
("session.js")@file:///w/conkeror/components/application.js:231
…
#+END_QUOTE
- está en: [[file:~/.conkeror.mozdev.org/conkeror/8d3rysoz.default/sessions/auto-save]]
- y aparentemente el problema es que está vacío (0 bytes) ← se perdió la sesión anterior
- ∴ borrarlo y ya no se queja
** IS no arranca, dice que perfil incompleto („Your conkeror profile cannot be loaded. It may be missing or inaccessible.“)
   CLOSED: [2014-04-08 Tue 13:34]
   :CLOCK:
   CLOCK: [2014-04-08 Tue 12:20]--[2014-04-08 Tue 13:34] =>  1:14
   :END:

No ayuda instalar el de Debian ni otro xulrunner.
¿Quién dice eso? No encuentro el mensaje en conkeror ni en xulrunner.
∴ Era por haber movido caché a otro directorio y enlazar mal.
** no arranca con firefox 57
   :CLOCK:
   CLOCK: [2017-11-17 Fri 08:05]--[2017-11-17 Fri 08:25] =>  0:20
   :END:
Esquive:
#+BEGIN_QUOTE
: dc; ~ ; /usr/bin/firefox-esr -app /w/conkeror/application.ini
#+END_QUOTE
*** fallo con „not a function“
#+BEGIN_QUOTE
JavaScript error: file:///w/conkeror/components/command-line.js, line 24: TypeError: conkeror.handle_command_line is not a function
Console error: [JavaScript Error: "TypeError: conkeror.handle_command_line is not a function" {file: "file:///w/conkeror/components/command-line.js" line: 24}]
  Category: chrome javascript
Console error: [JavaScript Error: "1510898869646	Toolkit.Telemetry	ERROR	TelemetryEnvironment::EnvironmentCache - error while initializing: [Exception... "
#+END_QUOTE
∴ Ver abajo.
*** fallo con yield
#+BEGIN_QUOTE
Error initializing.
SyntaxError: yield expression is only valid in generators
chrome://conkeror/content/hook.js:63
#+END_QUOTE
∴ Ver abajo.
*** otro fallo, Telemetry
#+BEGIN_QUOTE
handle@file:///w/conkeror/components/command-line.js:21:24
Console error: [JavaScript Error: "1510899452863	Toolkit.Telemetry	ERROR	TelemetryEnvironment::EnvironmentCache - error while initializing: [Exception... "Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIXPCComponents_Utils.import]"  nsresult: "0x80520012 (NS_ERROR_FILE_NOT_FOUND)"  location: "JS frame :: resource://gre/modules/XPCOMUtils.jsm :: XPCU_moduleLambda :: line 333"  data: no] Stack trace: XPCU_moduleLambda()@resource://gre/modules/XPCOMUtils.jsm:333 < get()@resource://gre/modules/XPCOMUtils.jsm:199 < _updateAttribution()@resource://gre/modules/TelemetryEnvironment.jsm:1432 < EnvironmentCache()@resource://gre/modules/TelemetryEnvironment.jsm:870 < getGlobal()@resource://gre/modules/TelemetryEnvironment.jsm:63 < get currentEnvironment()@resource://gre/modules/TelemetryEnvironment.jsm:70 < annotateEnvironment()@jar:file:///w/firefox/omni.ja!/components/TelemetryStartup.js:42 < TelemetryStartup.prototype.observe()@jar:file:///w/firefox/omni.ja!/components/TelemetryStartup.js:32" {file: "resource://gre/modules/Log.jsm" line: 752}]
App_append@resource://gre/modules/Log.jsm:752:9
log@resource://gre/modules/Log.jsm:390:7
#+END_QUOTE
∴ Ver abajo.
** falla con xulrunner 60.2 (iba en 52.9)
   :CLOCK:
   CLOCK: [2018-09-24 Mon 23:00]--[2018-09-24 Mon 23:24] =>  0:24
   CLOCK: [2018-09-24 Mon 21:36]--[2018-09-24 Mon 22:17] =>  0:41
   :END:

Y es que:
#+BEGIN_QUOTE
 Firefox 52 ESR is still based on Gecko, but it reached end of life on September 5 2018, to be replaced by a Quantum-based release (60).
#+END_QUOTE

∴ Rebajar:
: apt-get install firefox-esr=52.9.0esr-1~deb9u1
Y protegerse mucho mejor (sin JS, conexiones en segundo plano, etc.).


#+BEGIN_QUOTE
1537813985006	addons.manager	DEBUG	Registering shutdown blocker for PluginProvider
1537813985007	addons.manager	DEBUG	Provider finished startup: PluginProvider
1537813985008	addons.manager	DEBUG	Completed startup sequence
JavaScript error: jar:file:///usr/lib/firefox-esr/omni.ja!/components/addonsInfo.js, line 91: SyntaxError: "0"-prefixed octal literals and octal escape sequences are deprecated; for octal literals use the "0o" prefix instead
JavaScript error: file:///w/conkeror/components/application.js, line 164: SyntaxError: missing ) after catch
JavaScript error: file:///w/conkeror/components/command-line.js, line 21: NS_ERROR_XPC_GS_RETURNED_FAILURE: Component returned failure code: 0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService]
1537813985129	addons.manager	DEBUG	shutdown
1537813985129	addons.manager	DEBUG	Calling shutdown blocker for XPIProvider
1537813985129	addons.xpi	DEBUG	shutdown
#+END_QUOTE

#+BEGIN_QUOTE
commit 80787f6405583d942e53c61b6d9c9ad00c3f100f
Author: root <root@ocra>
Date:   Sun Sep 9 16:14:23 2018 +0300

    committing changes in /etc after apt run

    Package changes:
[…]
    -firefox-esr 52.9.0esr-1~deb9u1 amd64
    +firefox-esr 60.2.0esr-1~deb9u2 amd64  
#+END_QUOTE
*** un fallo es por un octal mal puesto
Veo parecidos:
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Identifier_after_number

En efecto, en addonsInfo.js veo:
#+BEGIN_QUOTE javascript
      var outstream = Cc["@mozilla.org/network/file-output-stream;1"]
                      .createInstance(Ci.nsIFileOutputStream);
      outstream.init(file, 0x2A /* TRUNCATE | WRONLY | CREATE */, 0666, 0);
      out = Cc["@mozilla.org/intl/converter-output-stream;1"]
            .createInstance(Ci.nsIConverterOutputStream);
#+END_QUOTE
Cambio el 0666 a 0o666.
Y lo pongo en /usr/lib/firefox-esr/omni.ja
*** siguiente fallo es por el if en el catch
#+BEGIN_QUOTE
JavaScript error: file:///w/conkeror/components/application.js, line 164: SyntaxError: missing ) after catch
JavaScript error: file:///w/conkeror/components/command-line.js, line 21: NS_ERROR_XPC_GS_RETURNED_FAILURE: Component returned failure code: 0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService]
#+END_QUOTE

#+BEGIN_QUOTE javascript
                try { …
                } catch (e if (typeof e == 'string' &&
                               (e.startsWith("ContentLength not available (not a local URL?)") ||
                                e.startsWith("Error creating channel (invalid URL scheme?)") ||
                                e.startsWith("Error opening input stream (invalid filename?)")))) {

#+END_QUOTE
Parecidos:
- https://gitlab.gnome.org/GNOME/gnome-sound-recorder/merge_requests/4
- solución: https://gitlab.gnome.org/GNOME/gnome-sound-recorder/merge_requests/4/diffs
*** otro fallo por const
#+BEGIN_QUOTE
1537816219732	addons.manager	DEBUG	Completed startup sequence
Error initializing.
SyntaxError: missing { before function body
chrome://conkeror/content/coroutine.js:293
load1@file:///w/conkeror/components/application.js:109:17
#+END_QUOTE

#+BEGIN_QUOTE javascript
const CONTINUATION = { toString: function () "[object CONTINUATION]" };
#+END_QUOTE
¿Pero esto va…? Probando:
#+BEGIN_SRC js :results output
//const CONTINUATION = { toString: function () "[object CONTINUATION]" };
const CONTINUATION = { toString: function () {"[object CONTINUATION]"} };
console.log(CONTINUATION);
#+END_SRC

#+RESULTS:
: { toString: [Function] }

** ya no va el ver ficheros de texto
   :CLOCK:
   CLOCK: [2016-09-23 Fri 15:00]--[2016-09-23 Fri 15:20] =>  0:20
   :END:
#+BEGIN_QUOTE
NS_ERROR_NOT_IMPLEMENTED: Component returned failure code: 0x80004001 (NS_ERROR_NOT_IMPLEMENTED) [nsICacheService.createSession]
cache_entry_clear()@chrome://conkeror/content/cache.js:56
override_mime_type_for_next_load()@chrome://conkeror/content/mime-type-override.js:83
_co_impl__send()@chrome://conkeror/content/coroutine.js:415
Handler.prototype.process()@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:937
this.PromiseWalker.walkerLoop()@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:816
this.PromiseWalker.scheduleWalkerLoop/<()@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:750
#+END_QUOTE

El código debe de estar anticuado.

** IS peta con SIGSEGV al seguir un enlace con target="_blank" (o target="a")
   CLOSED: [2017-06-17 Sat 17:47]
   :CLOCK:
   CLOCK: [2017-05-08 Mon 18:35]--[2017-05-08 Mon 18:50] =>  0:15
   CLOCK: [2017-05-08 Mon 14:15]--[2017-05-08 Mon 14:35] =>  0:20
   :END:
Esto con xulrunner de firefox 53.0.2.

- Ej. en http://www.zvv.ch/zvv/en/timetable/network-maps.html clicar un „Download PDF“.
- o en https://www.youtube.com/yt/creators/es/ clicar „haz un recorrido por…“
- o en file:///home/dc/repoweb/navega/popup.html
- o file:///home/dc/wiki/docu/pruebas.html con 2, el que no tiene target va bien, el que tiene no va

#+BEGIN_EXAMPLE peta
<a href="" target="a">elemento7'9, enlace con target „a“, a ningún lado</a>
#+END_EXAMPLE

Raro pues copiar/pegar el enlace va bien, lo malo es clicarlo (o seguirlo por teclado). 

Antes no pasaba.
#+BEGIN_QUOTE
close(34)                               = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=67248, tv_nsec=249527420}) = 0
gettimeofday({tv_sec=1494245982, tv_usec=180089}, NULL) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=NULL} ---
unlink("/home/dc/.conkeror.mozdev.org/conkeror/ikbwt84x.default/lock") = 0
close(7)                                = 0
rt_sigaction(SIGSEGV, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f9e3d4f30c0}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [SEGV], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, ~[RTMIN RT_1], [], 8) = 0
getpid()                                = 8784
gettid()                                = 8784
tgkill(8784, 8784, SIGSEGV)             = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SI_TKILL, si_pid=8784, si_uid=1000} ---
+++ killed by SIGSEGV +++
#+END_QUOTE
#+BEGIN_QUOTE
Thread 1 "firefox" received signal SIGSEGV, Segmentation fault.
0x00007f0f83ff89fd in ?? () from /w/firefox/libxul.so
(gdb) bt
#0  0x00007f0f83ff89fd in ?? () from /w/firefox/libxul.so
#1  0x00007f0f862e8bef in ?? () from /w/firefox/libxul.so
#2  0x00007f0f862e6db9 in ?? () from /w/firefox/libxul.so
#+END_QUOTE

Vuelvo a conkeror más viejo, y sigue pasando.

Probé =browser.link.open_newwindow=, no pasa nada.

De momento remarco por CSS estos enlaces, y los abro a mano en el fondo (tecla d), pues eso va.

Se corrigió en siguiente versión de Firefox (54).
** tras irlo a cerrar y cancelar porque hay cuadro de texto a medio escribir, ya no va nada (no va teclado etc.)
   :CLOCK:
   CLOCK: [2018-04-20 Fri 19:35]--[2018-04-20 Fri 20:00] =>  0:25
   :END:
#+BEGIN_QUOTE
JavaScript error: chrome://conkeror/content/buffer.js, line 297: TypeError: this.browser is null
Console error: [JavaScript Error: "TypeError: this.browser is null" {file: "chrome://conkeror/content/buffer.js" line: 297}]
  Category: chrome javascript
JavaScript error: chrome://conkeror/content/buffer.js, line 295: TypeError: this.browser is null
JavaScript error: chrome://conkeror/content/buffer.js, line 295: TypeError: this.browser is null
Console error: [JavaScript Error: "TypeError: this.browser is null" {file: "chrome://conkeror/content/buffer.js" line: 295}]
  Category: chrome javascript
Console error: [JavaScript Error: "TypeError: this.browser is null" {file: "chrome://conkeror/content/buffer.js" line: 295}]
  Category: chrome javascript
#+END_QUOTE
Puedo navegar con el ratón por la pestaña actual pero no cambiar a otras.

Puedo ejecutar JS:
: conkeror 'javascript:alert(21);'

No va:
: conkeror 'javascript:buffer_next(window, 1);'

No va:
: dc; ~ ; conkeror 'javascript:require("buffer.js");'                   
JavaScript error: javascript:require("buffer.js");, line 1: ReferenceError: require is not defined

: dc; ~ ; conkeror 'javascript:dumpln(window);'            
JavaScript error: javascript:dumpln(window);, line 1: ReferenceError: dumpln is not defined

∴ Matarlo. Y he perdido las cosas a medio escribir.
** „setup timeout“ al bajar+abrir PDF, por algo raro que hice
   :CLOCK:
   CLOCK: [2019-01-01 Tue 17:20]--[2019-01-01 Tue 17:31] =>  0:11
   :END:
Me apaño con:
: content_handlers.set("application/pdf", content_handler_save);

** arreglo función avanzar-a-versión-mejor
   :CLOCK:
   CLOCK: [2019-11-05 Tue 12:15]--[2019-11-05 Tue 12:30] =>  0:15
   :END:
* notas sueltas
** lista de correo, web etc.
- http://conkeror.org/
- http://conkeror.org/MailingList
- https://www.freelists.org/archive/conkeror/
** cdv
- http://conkeror.org/InstallationUnix#git
: git clone git://repo.or.cz/conkeror.git

** ver los ficheros que tiene a medio descargar (ej. un PDF de 20 Mb que va muy lento)
Seguro que hay interfaz… pero esto también va:
#+BEGIN_QUOTE
: dc; ~ ; lsof -n -p `pidof xulrunner` | grep ' /tmp'
xulrunner 11814   dc   54w   REG                8,3   5242880   1179776 /tmp/43.pdf.part
: dc; ~ ; lsof -n -p `pidof xulrunner` | grep ' /tmp'
xulrunner 11814   dc   54w   REG                8,3   5406720   1179776 /tmp/43.pdf.part
#+END_QUOTE

Si tras la descarga van a abrirse cosas… mejor hacer un =chvt 1=.
** ¿publicar configuración?
   :CLOCK:
   CLOCK: [2020-10-05 Mon 01:20]--[2020-10-05 Mon 01:32] =>  0:12
   :END:
** realmente no entiendo qué pasa al cerrar pestaña (¿a cuál va?) Uso 2 algoritmos pero hay más
   :CLOCK:
   CLOCK: [2019-06-26 Wed 18:21]--[2019-06-26 Wed 18:30] =>  0:09
   :END:
- „k“, =kill-and-next-buffer=
  - Parece que va al búfer que visiblemente está a la derecha. Se queda en la misma posición (ej. de 18 a 18) o al de la izquierda si he matado el más derechoso
  - en caso de que la última operación haya sido crear un búfer al final, al cerrarlo me va ir no al de la izquierda sino al que estaba viendo antes (esto es sorprendentemente útil). Excepto si me muevo; si me muevo pierde el puntero
  - ∴ Tras años de uso, esta tecla es la que más uso y prefiero, por eso la asignaré a la tecla fácil (k)
- „K“, =kill-current-buffer=
  - ~~~~~ Parece que va al búfer que estaba a la derecha en el momento de ser abierto
  - se comporta casi igual que kill-and-next-buffer
- parece que ambos se comportan igual si no hay movimiento de pestañas. Y cuando lo hay: kcb aprovecha el orden original, mientras que kanb lo dscarta y usa el orden visible
** cosas sueltas a recordar
- „u C“ en conkeror: *añade* a lo copiado. Bueno para copiar varias URL una tras otra, y luego pegarlas juntas
